Welcome to the
programmer support pages for

MILDRED
mistress of chunky magic
A chunky-graphics library for the Blitz Basic programming language

Written by Paul West in 1998-2000.
Copyright (c) 1998-2000 Paul Jonathan West

Last updated Thursday 3rd March 2000

Paul in a moment of self-photography Intro: Mildred is a 8-bit-chunky graphics library for the programming language called BlitzBasic2 on the Amiga computer. It is written entirely in assembly language and offers a large variety of graphics-related capabilities which are accessible from your own BlitzBasic2 programs via tokens. Mildred offers handling of chunky bitmaps and shapes and has its own queue system to help with many engine's into which it may be applied. It also has a selection of particle animation and rendering routines, zooms, and a fast chunky-to-planar conversion system. There are various blitting modes to choose from, individually selectable for a range of scroll, blockscroll and blit routines, allowing graphics handling in colour, as well as transparencies and other effects. There are various housekeeping routines to handle the objects and also a range of drawing routines for points, lines and boxes, also in various blit modes. Plus there are a selection of fast tile routines for map-type engines. The design of the interface between the programmer and the library is based on the existing design of the original BlitzBasic2 graphics tokens, which makes for an easier integration and changeover. Perhaps most importantly of all, the output from Mildred is easily retargetabble between the standard AGA display hardware and a graphics card (which supports 8-bit modes).

A fairly recent view of Paul's computer area in his bedroom Disclaimer: I make no promises as to the reliability or suitability of Mildred or any of the example programs, accuracy of documentation or absense of bugs. I cannot be held liable for any damage that may come about to yourself, others, nor meterial or intellectual property as a result of exposure to and use of the library and its supporting information. Use of Mildred is entirely at your own risk and the author will not be held accountable for any confusions, mishaps, mistakes, losses or damages. I can also make no promises about the speed or performance of any of the routines available and you should be aware that working with chunky-format graphics requires a certain amount of cpu power to be productive (e.g. 68030/50MHz or higher). Yet I, Paul Jonathan West, would like to offer at least the warm encouragement that Mildred has undergone extensive testing both via exposure to the public and as a result of my own checking and perfecting. So far no bugs have been reported since the release of Mildred v1.50 in May 1999. Please note also that the example/demo programs available below are there to help you get used to coding using Mildred and will work on most Amiga's, but in some cases there are problems. This is not necessarily representative of the reliability of the library itself, but of poorly coded examples (on my part mostly). I apologise for this and hope that nevertheless you will have few problems becoming accustomed to using Mildred to open new avenues in your programming.

Another moment of Paul in self-photography
Notice: Mildred is designed, written and created by Paul West. Main development occurred from October 1998 till May 1999 mostly full-time. The sourcecode, its copyright and freedom to make alterations, modifications and additions has been reclaimed from Pagan Games, as well as full rights of distribution as I see fit. This has no effect on public use of the compiled library in any of your projects, such as can be downloaded in the archives below. There is no further work planned by the author at this time, but further work is now a possibility. All of the files and information available below for download are free for public use and the author will willingly accept payments for use of Mildred in your products if you are feeling generous! Please enjoy this great library and good luck with your projects.

Paul's house, viewed from afar Mildred Stats: 863,325 bytes of assembler code spanning 27,176 lines, 219 individual tokens with the functionality of 407 via syntax variations, sourcecode commented on 12,440 lines, full runtime errorchecking routines throughout, 51 version updates comprising bugfixes, additional code and optimisations since the first public release, full AmigaGuide and Html documentation covering every token and variation of syntax, 4 months full time and 3 months part time work, compiles to 138,104 bytes in 115 seconds on my 68040/25.

Click HERE for library history, or HERE for a list of commands.



(65k) Mildred.lha : This is the actual Mildred library, version 1.51.

(47k) MildredGuide.lha : This is an archive containing full documentation covering ALL commands in Mildred for version 1.51, in AmigaGuide format. Alternatively you can click HERE to view the text on-line.

(124k) MildredHtml.lha : Html version of the MildredGuide.lha amigaguide v1.51 documentation. Alternatively, you can click HERE to read the Html documentation online.

(2k) Internal.lha : This is a copy of the internal data area of Mildred v1.47. This may be needed if you are writing your own libraries and wish to tap in to Mildred's data area (which can also be achieved using MMildredBase). Alternatively you can click HERE to view it online.

(16k) MiniMildred.lha : This is the abridged MiniMildred library, version 1.19, the chunky-to-planar subsystem of the main Mildred system. (Bugfixed)

(36k) OldHtml.lha : This is an archive containing the OLD on-line html documenation for Mildred that covered all of the chunky-to-planar-related commands. There are no pictures included.


The view from Paul's bedroom window in summer Notice: You can now download the sourcecode to Mildred. It is free of charges and obligations. I, Paul Jonathan West, retain copyright ownership of the library as it stands and is presented at this website, but you may freely alter, distribute, modify, enhance, optimise, reform and use the source in any way you see fit in any of your projects, experiments and products. I do not expect a fee for this privelege but would welcome any small donations and can be contacted by email.

(105k) MildredSourceAsc.lha : Full sourcecode to the Mildred library v1.51, saved in ASCII format, or click HERE to read the source online.

(105k) MildredSourceBB2.lha : Full sourcecode to the Mildred library v1.51, saved in BlitzBasic2 format.

(6k) MildredTests.lha : A few small test programs that I used at times to check if various tokens were working as they should.

(10k) MiniMildredSourceAsc.lha : Full sourcecode to the MiniMildred library, saved in ASCII format.

(10k) MiniMildredSourceBB2.lha : Full sourcecode to the MiniMildred library, saved in BlitzBasic2 format.



Notice: To follow are various archives of demo programs and related material that may help you in your exploration of using Mildred in your own software. Not all of it works at it should for everyone all the time but I hope it will offer you some useful introduction to various aspects of programming with Mildred.

Dissolve demo (165k) DissolveDemo.lha : This is a demonstration of how to use MPictureDissolveIn. Two example effects are included but the possible effects are limited only by your imagination. Updated to work with v1.44.

(19k) ILBMviewer.lha : This is a demonstration mainly of the c2p system and its interlacing features. It allows you to load in an ILBM picture and to display it in the form of a superbitmap. This also includes some old code for an ILBM-to-Chunky loader, and a screenmode-requester routine with a callback hook. Updated to work with v1.45.

(3k) MildredStructs.txt : Here are the structures for Mildred's objects. This is not an archive.

Bounce demo (9k) BounceDemo.lha : This is a demo for bouncing objects around the screen. It uses MQSBlit to put objects behind the bitmap's stencil and into the queue and also performs an unqueue from a store-bitmap. Updated to work with v1.43.

FD's Example 1 (15k) FDsExample1.lha : This is an example program demonstrating the use of Mildred to produce a cool sinewave effect on a logo, written by Mikkel Lokke.

(15k) MScreen.lha : An example of how to open a screen that can be retargetted to graphics-card or to AGA, in a way that works easily with Mildred and allows the use of MBlockScroll for fast graphics-card output in 8-bit chunky. Updated for v1.45.

(3k) FDsExample2.lha : Another example by Mikkel Lokke, demonstrating how to safely cludge a shape onto previously created shape data.

(23k) CardTest.lha : This is a couple of programs (Comparison and ILBMviewer2) that I was fiddling with when experimenting with graphics-card output. Comparison does a speed-test between using WritePixelArray8 and MBlockScroll for output, and ILBMviewer2 is a reworking of the old ILBMviewer program but with different graphics-card output (using MBlockScroll). The comparison program is also a combination of ILBMviewer and the Bounce demo. Updated to work with v1.45.

Remap demo (258k) Remap.lha : This is a demonstration of the MReMapUsingShape command in combination with a remapping table. Three precalculated tables are included for 50% merge, add, and subtract or alternatively you can compute your own (see sourcecode). Note that a generated table only works for the palette it was computed with. This demo also has Mildred-based AGA and GFX-card support. You will need Mildred v1.42 for this demo to work free of bugs, although it will work with earlier versions. Now updated for v1.43 and using MQblit with MReMapMode instead of MReMapUsingShape (which has been deleted from the library). Updated for v1.45.

(5k) GFXlib.lha : This is an updated version of the blitzlibs:amigalibs/graphics.library files for o/s 3.1, which provides the new function WriteChunkyPixels_() which can be useful for graphics-card output. Note that the more recent Mildred demo's are written using this library so if you get tokenisation problems there (ie the wrong tokens come up) then you might like to try this update (or try loading in the ascii sourcecode), although it will only be fully accessible if you have o/s 3.1.

Bounce9 demo (155k) Bounce9.lha : This is a quick new demo of the `remap mode' blits that were introduced in Mildred v1.27. Two tables have been precalculated showing 50% and 20% merge. The sourcecode contains the necessary routines to generate further different tables (it takes a while!) Now updated for v1.45.

FD's example 3 (73k) FDsExample3.lha : Welcome to a superbitmap scroll demo by, another fine effort by Flame Duck himself, Mikkel Lokke. This demonstrates how you can scroll around a superbitmap. Updated for v1.43.

(3k) FDsExample4.lha : A nice little exploding firework effect using Mildred, by Mikkel Lokke. Updated for v1.43.

Scroll demo (213k) ScrollDemo.lha : This is a demonstration of various types of `scroll' commands in Mildred. The featured effect from top-left are scroll, blockscroll, motionblur using 50% merge, blacksmoke using subtract, stencil in colour, scroll from same bitmap, 50% transparency, scroll behind stencil including x and y flips, scroll from same bitmap and y-flipped copy of the 50% merge. See the effects for yourself. The two necessary remap tables are included, along with the iff pic that is needed (the tables are calculated based on its palette). Updated for v1.45.

Pixel Explosion demo (3k) PixelExplosion.lha : This is a modification of Mikkel's pixel explosion program (FDsExample4.lha) with much improved speed and performance. There are 15000 pixels exploding! The enhancement has been done by Sami Naatanen, with thanks to Flame Duck for the original program. Updated for v1.43.

MScreen2 demo (47k) MScreen2.lha : This is an better example of how to do RTG in your Mildred programs. You will need o/s v3.1 graphics.library (see above) in order to load the source properly, but ascii is included (as is exe). You will need to put cybergfx.res into blitzlibs: (included). The demo will make use of cybergraphics library if you have it (or picasso96), and offers a selection of output methods (selectable with variables). A simple bouncing line routine is done to show that the output works. The demo defaults to custom Mildred output and triple buffering. See below for the cybergraphics.library1 file if you haven't already installed one yourself. Updated for v1.45.

(3k) PixelExplosion2.lha : This is a further modification by myself to the pixel explosion routine that Mikkel originally wrote, which was later modified by Sami. I have converted the program to use the new particle animation routines, and is now at least twice as fast, or many times faster on lower cpu's. Now updated for v1.43.

Gravity example (10k) GravityExample.lha : A fun little demo of a Gravity-Force style game written by Sami Nataanen. This shows some simple use of some particle animation routines and output from a superbitmap, as well as a nifty little gravity effect, thrust, and bullets. Updated for v1.43.

HStar demo (2k) CyberGFX.lha : This is the cybergraphics.library1 library file which you can/should put into your blitzlibs:amigalibs/ directory (and remake your deflibs) to provide the standard set of tokens for the cybergraphics library. Also included is a .res file which you should put into blitzlibs:, converted by Daniel Allsopp.

(73k) DispDemo.lha : A superbitmap scroll demo by Andreas Hkansson, similar to FDExample3, but showing you how to simply implement a split-screen display such as for a two-player game. Updated for v1.43.

(7k) HStarDemo.lha : Here is a nice little horizontal starfield with a bendy logo effect, written mostly by Bruce Henderson.

(7k) Starfield2.lha : This is a modification of HStarDemo.lha demonstrating how to use MScroll with a custom-offsets list so that the bendy logo effect can be achieved with only one call to MScroll rather than seperate calls for each line. The sinewave had to be put into a lookup table for this purpose, so overall the effect is faster (without the WaitTOF).

(20k) SineExample.lha : Here are two demos of using a custom-offsets list to produce the sinewave logo effect as originally written by Mikkel Lokke. Rather than blit each line seperately the lookup table is used to offset each line as the scroll progresses. The overall result is a much smoother effect. Also a second demo is included which attemps to do a quick verticle sinewave simultaneously (although using a seperate call for each column) so produce a liquid sort of effect.

Zoom demo (84k) ZoomDemo.lha : Here are two demos featuring examples of the new zoom routines as introduced in Midred v1.47. The first is a simple zoom of an image and the second shows how to use a custom-offsets list to modify the zoom effect on each line (with which much fun can be had!). Updated for v1.48.

DeRes demo (84k) DeResDemo.lha : Here are two demos featuring examples of the new de-res effect that has been added to the zoom routines in Mildred v1.48. The first is a simple de-res of an image and the second shows how to use the custom-offsets list to modify the de-res effect on each line.

(34k) CNKI.lha : Here is a proposed file format for storing chunky shapes (which could also be applied to chunky bitmaps), designed by Chris Deeney. It is able to store single shapes or `anim shapes', and a converter program is included to convert IFF brush and IFF animbrush files into CNKI files. Also supplied are some blitz routines to handle the CNKI files including LoadCNK{} for loading in the CNKI files to your program. The CNKI files can also have some compression.

SplitTest (417k) SplitTests.lha : Four examples of doing splitscreens using Mildred. These examples are released `as is' and haven't really been coded for an audience, but you may find them an interesting example of various kinds of split-screens possible using Mildred. The examples use a superbitmap source with multiple views on it, including 4-way split, diagonal split and a single view with zoom (use mouse buttons). These programs were simple experiments in splitscreen methods and how many objects could be rendered/handled at the same time.

SlideShow demo (309k) SlideShow.lha : This is part of a programmed slideshow-type demo which I began work on. It shows an example of using MZoom as well as two examples of picture dissolving. Again this sourcecode wasn't intended to have an audience but you may find it interesting. It was targetted at an 040/25 so will run slow on anything less.

(42k) LandTest1.lha : (50k) LandTest2.lha : (98k) LandTest3.lha : (86k) LandTest4.lha : (101k) LandTest5.lha : (279k) LandTest6.lha : (163k) LandTest7.lha :
LandTest LandTest is the beginnings of a game engine, intened to be a cross between Defender and Revenge of the mutant camels. It starts off in LandTest1.lha as my first experiments with a parallax ground using Mildred. In LandTest3.lha things have got much more sophisicated and by LandTest6.lha and LandTest7.lha most of the main features are in place - for as far I'd got with it. Archive 6 has a selection of alternative executables, and archive 7 also has an executable. Note that Mildred is used for all of the graphics rendering and that the screen comprises a full graphical backdrop (128 shared colours) and 256-colour objects (using 128 colours probably). The sky was due to eventually get several parallax layers as well. Control is via the joystick. In some of the versions, deacceleration is switched off. This was due only to my standing back for hours on end admiring my handywork in motion! These files, at least, show a good example using a scroll with a custom offsets table to produce a parallax ground effect in a single blit. Also some particle routines are used for animation, and realtime zoomed bobs for the background map. Note that earlier archives output to AGA only, and none of these files were intended for an audience. If there is any project that I might continue with someday it could be this one. LandTest was designed to run at 25fps on an 040/25 and makes strong use of 040 optimisations.

(160k) LandMap.lha : LandMap accompanies the LandTest programs above. It is used to convert an ordinary strip of `land' graphic into a fake perspective, ready to be used for the parallax ground image in the LandTest examples. The operation of the parallax in the LandTest programs is dependent upon the output from this program. Some degree of palette remapping may also be involved as, in later versions, sky and land images shared the same 128 colour palette. Note that these programs also were not designed with an audience in mind.

RotateTest (40k) RotateTest.lha : This is a little experiment I did in rotating a bitmap realtime. There are two versions, the latter being slightly faster due to using Mildred's particle drawing routines instead of individual plots. You can use the mouse buttons to zoom in and out because it zooms at the same time as rotating. This was really my first exploration into rotation and I would've liked to have offered various blits with rotation incorporated, but on trying experimenting with the idea in assembler I found there was a major shortage of registers spare and therefore any implementation would be less than optimum speed, especially in different blit modes (and it would require the infamouse DIVU command which is very slow). This routine outputs to AGA only and the source is not designed for an audience.

(34k) PixelExplosion4.lha : This is a revision of the previous Pixel Explosion examples, simply to test using the particle routines in `add' mode. The resulting effect is that the explosion starts off `bright' when the particles are condensed and `cools' as they disperse.

SnowDemo (121k) SnowDemo.lha : This is a demo of how you might do a snow effect using particles in Mildred. The particles simply have random positions, a base movement direction is added to them, and then a random variation direction is added to them. When they go off the end of the buffer they're wrapped back to the top. Note that this example wasn't designed for an audience, but enjoy.

(114k) RainDemo.lha : This is similar to the SnowDemo above, except that in this example the particles are clumped together and moved together in unisons of 4 to create the impression of a streak of rain rather than individual pixels. Also the movement variance is adjusted to give a less snow-blowy effect. Note that this example wasn't designed for an audience either, but enjoy.


The team of Pagan Games were using Mildred in Dafel:Bloodline. This project was the womb from which Mildred sprang.


Mildred is also being used in Operation:CounterStrike from BlueBlack Solution by Daniel Allsopp.


Rui "Grim" Calvalho of Dark Dreams Designs is using Mildred in his new Bubbles game.


Paul Burkey is using MiniMildred in Foundation.


Visitors: Visitor Stats

A Member of the Blitz WebRing
Blitzring Imagemap
[Prev] [Next] [Rand] [Home] [Prev5] [Next5] [SkipNext] [SkipPrev] [List]

Paul at London Zoo, courtesy of his beloved Marykay